﻿namespace ThingsGateway.Foundation
{
    /// <summary>
    /// 用于读写的设备接口，可以用来和设备进行交互。<br />
    /// </summary>
    public interface IReadWriteDevice : IReadWrite
    {

        /// <summary>
        /// 超时时间
        /// </summary>
        ushort TimeOut { get; }


        /// <summary>
        /// 当前的数据变换机制<br />
        /// </summary>
        IByteConverter ByteConverter { get; }
        /// <summary>
        /// 获取解析后的实际寄存器数量<br />
        /// </summary>
        /// <param name="address">读取的设备的地址信息</param>
        /// <param name="length">读取的数据长度信息</param>
        /// <param name="dataTypeLength">数据类型的字长度信息，比如short, 就是1，int,float就是2</param>
        ushort GetWordLength(string address, int length, int dataTypeLength);
        /// <summary>
        /// 一个字单位的数据表示的实际寄存器数量<br />
        /// </summary>
        ushort WordLength { get; }
    }
}